package com.moli.iov.base.remote;

import com.moli.iov.base.model.dto.req.QueryVehicleTboxListParamDto;
import com.moli.iov.base.model.dto.req.TerminalBindingDeleteDto;
import com.moli.iov.base.model.dto.req.TerminalBindingSaveDto;
import com.moli.iov.base.model.dto.req.VehicleTboxReqDto;
import com.moli.iov.base.model.dto.req.VehicleTboxUpdateReqDto;
import com.moli.iov.base.model.dto.res.VehicleBaseTboxResDto;
import com.moli.iov.base.model.dto.res.VehicleTboxBindingResDto;
import com.moli.iov.base.model.dto.res.VehicleTboxResDto;
import com.moli.iov.base.model.po.VehicleTbox;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;
import java.util.List;

/**
 * @author whl
 */
public interface IVehicleTboxRemoteService {

  /**
   * 通过网关注册tbox 添加实体类
   * @param vehicleTboxAddReqDto
   * @return
   */
  public RestResponse gatewayRegisterVehicleTbox(VehicleTboxReqDto vehicleTboxAddReqDto);
  /**
   * 车辆监控> 车载终端
   * TBOX管理查询页
   * @param queryParam
   * @return
   */
  public RestResponse<PageExtend<VehicleTboxResDto>> listVehicleTboxs(
      QueryVehicleTboxListParamDto queryParam);

  /**
   * 变更SIM卡号
   * @param dto
   * @return
   */
  RestResponse updateVehicleTbox(VehicleTboxUpdateReqDto dto);

  /**
   * 得到车架号
   * @param vin
   * @return
   */
  VehicleBaseTboxResDto getVehicleTboxByVin(String vin);

  /**
   * 根据
   * @param deviceId
   * @return
   */
  VehicleTbox getVehicleTboxByDeviceId(String deviceId);

  /**
   * Service -task
   * @return
   */
  List<VehicleTbox> listVehicleTbox();

  /**
   * 大小
   * @return
   */
  RestResponse queryVehicleTboxCount();

  /**
   *  op 服务
   * @param vinList
   * @return
   */
  RestResponse<List<VehicleTboxResDto>> listVehicleTboxList(List<String> vinList);

  /**
   *  车辆监控> 车载终端-编辑
    * @param dto
   *  @version 3.01
   *  @return
   */
  RestResponse  updateVehicleTbox(VehicleTboxReqDto dto);

  /**
   * 设备管理> 终端安装管理 有效授权
   * @param queryParam
   * @return
   */
  RestResponse  <PageExtend<VehicleTboxBindingResDto>> listVehicleTboxBinding(QueryVehicleTboxListParamDto queryParam);

  /**
   * 添加建立绑定关系
   * @param dto
   * @return
   */
  RestResponse listVehicleTboxBindingSave(TerminalBindingSaveDto dto);

  /**
   * 删除绑定关系
   * @param dto
   * @return
   */
    RestResponse listVehicleTboxBindingDelete(TerminalBindingDeleteDto dto);

  /**
   * 添加tbox
   * @param dto
   * @return
   */
    RestResponse saveVehicleTbox(VehicleTboxReqDto dto);
}
